/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Entity;

import java.io.Serializable;
import java.util.GregorianCalendar;
import java.util.List;
import javax.persistence.Basic;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

/**
 *
 * @author Vito
 */
@Entity
@Table(name = "UTENTE", catalog = "", schema = "APP")
@NamedQueries({
    @NamedQuery(name = "Utente.findAll", query = "SELECT u FROM Utente u"),
    @NamedQuery(name = "Utente.findById", query = "SELECT u FROM Utente u WHERE u.id = :id"),
    @NamedQuery(name = "Utente.findByUsername", query = "SELECT u FROM Utente u WHERE u.username = :username"),
    @NamedQuery(name = "Utente.findByPassword", query = "SELECT u FROM Utente u WHERE u.password = :password"),
    @NamedQuery(name = "Utente.login", query = "SELECT u FROM Utente u WHERE u.username = :username AND u.password = :password"),
    @NamedQuery(name = "Utente.findByStato", query = "SELECT u FROM Utente u WHERE u.stato = :stato"),
    @NamedQuery(name = "Utente.findByRegione", query = "SELECT u FROM Utente u WHERE u.regione = :regione"),
    @NamedQuery(name = "Utente.findByEmail", query = "SELECT u FROM Utente u WHERE u.email = :email"),
    @NamedQuery(name = "Utente.findByCitta", query = "SELECT u FROM Utente u WHERE u.citta = :citta"),
    @NamedQuery(name = "Utente.findByIndirizzo", query = "SELECT u FROM Utente u WHERE u.indirizzo = :indirizzo"),
    @NamedQuery(name = "Utente.findByNome", query = "SELECT u FROM Utente u WHERE u.nome = :nome"),
    @NamedQuery(name = "Utente.findByProvincia", query = "SELECT u FROM Utente u WHERE u.provincia = :provincia"),
    @NamedQuery(name = "Utente.findByCognome", query = "SELECT u FROM Utente u WHERE u.cognome = :cognome"),
    @NamedQuery(name = "Utente.findByCodicefiscale", query = "SELECT u FROM Utente u WHERE u.codicefiscale = :codicefiscale"),
    @NamedQuery(name = "Utente.findByDatanascita", query = "SELECT u FROM Utente u WHERE u.datanascita = :datanascita")})
public class Utente implements Serializable {

    private static final long serialVersionUID = 1L;
    @Id
    @Basic(optional = false)
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Column(name = "ID", nullable = false)
    private Integer id;
    @Basic(optional = false)
    @Column(name = "USERNAME", nullable = false, length = 30)
    private String username;
    @Basic(optional = false)
    @Column(name = "PASSWORD", nullable = false, length = 20)
    private String password;
    @Column(name = "STATO", length = 255)
    private String stato;
    @Column(name = "REGIONE", length = 255)
    private String regione;
    @Column(name = "EMAIL", length = 255)
    private String email;
    @Column(name = "CITTA", length = 255)
    private String citta;
    @Column(name = "INDIRIZZO", length = 255)
    private String indirizzo;
    @Column(name = "NOME", length = 255)
    private String nome;
    @Column(name = "PROVINCIA", length = 255)
    private String provincia;
    @Column(name = "COGNOME", length = 255)
    private String cognome;
    @Column(name = "CODICEFISCALE", length = 255)
    private String codicefiscale;
    @Column(name = "DATANASCITA")
    @Temporal(TemporalType.DATE)
    private GregorianCalendar datanascita;
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "locatore")
    private List<Inserzione> inserzioneList;
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "locatario")
    private List<Transazione> transazioneList;
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "idInt")
    private List<Esterni> esterniList;

    public Utente() {
    }

    public Utente(Integer id) {
        this.id = id;
    }

    public Utente(Integer id, String username, String password) {
        this.id = id;
        this.username = username;
        this.password = password;
    }

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public String getStato() {
        return stato;
    }

    public void setStato(String stato) {
        this.stato = stato;
    }

    public String getRegione() {
        return regione;
    }

    public void setRegione(String regione) {
        this.regione = regione;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public String getCitta() {
        return citta;
    }

    public void setCitta(String citta) {
        this.citta = citta;
    }

    public String getIndirizzo() {
        return indirizzo;
    }

    public void setIndirizzo(String indirizzo) {
        this.indirizzo = indirizzo;
    }

    public String getNome() {
        return nome;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }

    public String getProvincia() {
        return provincia;
    }

    public void setProvincia(String provincia) {
        this.provincia = provincia;
    }

    public String getCognome() {
        return cognome;
    }

    public void setCognome(String cognome) {
        this.cognome = cognome;
    }

    public String getCodicefiscale() {
        return codicefiscale;
    }

    public void setCodicefiscale(String codicefiscale) {
        this.codicefiscale = codicefiscale;
    }

    public GregorianCalendar getDatanascita() {
        return datanascita;
    }

    public void setDatanascita(GregorianCalendar datanascita) {
        this.datanascita = datanascita;
    }

    public List<Inserzione> getInserzioneList() {
        return inserzioneList;
    }

    public void setInserzioneList(List<Inserzione> inserzioneList) {
        this.inserzioneList = inserzioneList;
    }

    public List<Transazione> getTransazioneList() {
        return transazioneList;
    }

    public void setTransazioneList(List<Transazione> transazioneList) {
        this.transazioneList = transazioneList;
    }

    public List<Esterni> getEsterniList() {
        return esterniList;
    }

    public void setEsterniList(List<Esterni> esterniList) {
        this.esterniList = esterniList;
    }

    @Override
    public int hashCode() {
        int hash = 0;
        hash += (id != null ? id.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object object) {
        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof Utente)) {
            return false;
        }
        Utente other = (Utente) object;
        if ((this.id == null && other.id != null) || (this.id != null && !this.id.equals(other.id))) {
            return false;
        }
        return true;
    }

    @Override
    public String toString() {
        return "Entity.Utente[id=" + id + "]";
    }
}
